package BaseDeDatos;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import ClasesBasicas.Usuario;

public class ConsultasUsuario {
	
	public static Usuario getUsuario(String Id_Usuario) {
		Usuario actual = new Usuario();
		Connection conn;
		PreparedStatement ps;
		String url;
		ResultSet rs;
		try {
			Class.forName("org.sqlite.JDBC");
			url="jdbc:sqlite:Funcionalidad.db";
			conn = DriverManager.getConnection(url,"","");
			ps =conn.prepareStatement("select * from Usuario where Id_Usuario = ? ;");
			ps.setString(1, Id_Usuario);
			rs=ps.executeQuery();
			while (rs.next()) {
				actual.setId_usuario(rs.getString("Id_Usuario"));
				actual.setPassword(rs.getString("password"));
				actual.setNombre(rs.getString("nombre"));
				actual.setTelefono(rs.getInt("telefono"));
				actual.setEmail(rs.getString("email"));
			}
			return actual;
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("Error al obtener el usuario "+Id_Usuario);
			return new Usuario();
		}
	}
	public static List<Usuario> getUsuarios() {
		List<Usuario> usuarios = new ArrayList<Usuario>();
		Usuario actual = new Usuario();
		Connection conn;
		PreparedStatement ps;
		String url;
		ResultSet rs;
		try {
			Class.forName("org.sqlite.JDBC");
			url="jdbc:sqlite:Funcionalidad.db";
			conn = DriverManager.getConnection(url,"","");
			ps =conn.prepareStatement("select * from Usuario ;");
			rs=ps.executeQuery();
			while (rs.next()) {
				actual = new Usuario();
				actual.setId_usuario(rs.getString("Id_Usuario"));
				actual.setPassword(rs.getString("password"));
				actual.setNombre(rs.getString("nombre"));
				actual.setTelefono(rs.getInt("telefono"));
				actual.setEmail(rs.getString("email"));
				usuarios.add(actual);
			}
			return usuarios;
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("Error al obtener la lista de usuarios");
			return new ArrayList<Usuario>();
		}
	}
	
	public static void insertarUsuario(String Id_Usuario, String Password, String Nombre, Integer Telefono, String Email) {
		
		Connection conn;
		PreparedStatement ps;
		String url;
		try {
			Class.forName("org.sqlite.JDBC");
			url="jdbc:sqlite:Funcionalidad.db";
			conn = DriverManager.getConnection(url,"","");
			ps =conn.prepareStatement("insert into Usuario values (?, ?, ?, ?, ?)");
			ps.setString(1, Id_Usuario);
			ps.setString(2, Password);
			ps.setString(3, Nombre);
			ps.setInt(4, Telefono);
			ps.setString(5, Email);
			ps.executeUpdate();
			
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("Error al insertar un nuevo usuario en la BD.");
		}
	}
 public static void borrarUsuario(String Id_Usuario) {
		
		Connection conn;
		PreparedStatement ps;
		String url;
		try {
			Class.forName("org.sqlite.JDBC");
			url="jdbc:sqlite:Funcionalidad.db";
			conn = DriverManager.getConnection(url,"","");
			ps =conn.prepareStatement("delete from Usuario where Id_Usuario=?");
			ps.setString(1, Id_Usuario);
			ps.executeUpdate();
			
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("Error al borrar un usuario de la BD.");
		}
	}
 public static void modificarUsuario(String Id_Usuario, String Password, String Nombre, Integer Telefono, String Email) {
		
		Connection conn;
		PreparedStatement ps;
		String url;
		try {
			Class.forName("org.sqlite.JDBC");
			url="jdbc:sqlite:Funcionalidad.db";
			conn = DriverManager.getConnection(url,"","");
			ps =conn.prepareStatement("update Usuario set password= ?, nombre= ?, telefono= ?, email= ? where Id_Usuario= ?");
			ps.setString(1, Password);
			ps.setString(2, Nombre);
			ps.setInt(3, Telefono);
			ps.setString(4, Email);
			ps.setString(5, Id_Usuario);
			ps.executeUpdate();
			
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("Error al modificar un usuario en la BD.");
		}
	}
 
  public static void main(String [] args)
{
	List<Usuario> usuarios=ConsultasUsuario.getUsuarios();
	System.out.println(usuarios.size());
	ConsultasUsuario.insertarUsuario("pepito", "12345", "Jose", 9888888, "perico@gmail.com");
	usuarios=ConsultasUsuario.getUsuarios();
	ConsultasUsuario.modificarUsuario("pepito", "67890", "Pepe", 66666, "pepito@yahoo.es");
	Usuario usuario=ConsultasUsuario.getUsuario("pepito");
	System.out.println(usuario.getEmail());
	usuarios=ConsultasUsuario.getUsuarios();
	System.out.println(usuarios.size());
	ConsultasUsuario.borrarUsuario("pepito");
	usuarios=ConsultasUsuario.getUsuarios();
	System.out.println(usuarios.size());
	
	
	
}
}
